#include<iostream>
using namespace std;
const int maxn = 5e5+7;
int n;
long long a[maxn];
#define lsb(x) (x&-x)
int sum[maxn];
void Add(int x) {
    while(x<maxn) {
        sum[x]++; x+=lsb(x);
    }
}
long long Query(int x) {
    long long ret = 0;
    while(x>0) {
        ret+=sum[x]; x-=lsb(x);
    }
    return ret;
}
int main() {
    cin>>n;
    for(int i=1; i<=n; ++i) cin>>a[i], a[i]+=a[i-1];
    if(a[n]%3!=0) {
        cout<<"0\n"; return 0;
    }
    long long target = a[n] / 3;
    long long ans = 0;
    if(target!=0) {
        for(int i=1; i<=n; ++i) {
            if(a[i]==target) {
                Add(i);
            }
            else if(a[i]==target*2) {
                ans += Query(i);
            }
        }
    }
    else {
        int zeros = 0;
        for(int i=1; i<n; ++i) {
            if(a[i]==0) zeros++;
        }
        ans = 1LL*zeros*(zeros-1)/2;
    }
    cout<<ans<<'\n';
}
